package com.itheima.d7_commons_io;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Path;

/**
 * 目标：使用CommonsIO框架进行IO相关的操作。
 * 什么是框架：
 *      解决某类问题，编写的一套类、接口等，可以理解成一个半成品，大多框架都是第三方研发的。
 *      好处：在框架的基础上开发，可以得到优秀的软件架构，并能提高开发效率。后续开发大都是用框架进行项目开发
 *      框架的形式：一般是把类、接口等编译成class形式的文件，再把class文件压缩成一个.jar结尾的文件发行出去。
 *
 * 什么是IO框架：
 *      封装了Java提供的对文件、数据进行操作的代码，对外提供了更简单的方式来对文件进行操作，对数据进行读写等。
 *
 * Commons-io是apache开源基金组织提供的一组有关IO操作的小框架，目的是提高IO流的开发效率。
 *      FileUtils类提供的部分方法展示
 *  public static void copyFile(File srcFile, File destFile)                复制文件。
 *  public static void copyDirectory(File srcDir, File destDir)             复制文件夹
 *  public static void deleteDirectory(File directory)                      删除文件夹
 *  public static String readFileToString(File file, String encoding)       读数据
 *  public static void writeStringToFile(File file, String data, String charname, boolean append)       写数据
 *      IOUtils类提供的部分方法展示
 *  public static int copy(InputStream inputStream, OutputStream outputStream)      复制文件。
 *  public static int copy(Reader reader, Writer writer)                    复制文件。
 *  public static void write(String data, OutputStream output, String charsetName)      写数据
 *
 *  导入commons-io-2.11.0.jar框架到项目中去
 *在项目中创建一个文件夹：lib
 * 将commons-io-2.6.jar文件复制到lib文件夹
 * 在jar文件上点右键，选择 Add as Library -> 点击OK
 * 在类中导包使用
 */
public class CommonsIOTest1 {
    public static void main(String[] args) throws Exception {
        //文件复制
        //FileUtils.copyFile(new File("Day09Io-App2\\src\\itheima01.txt"), new File("Day09Io-App2/src/a.txt"));
        //文件夹复制
        //FileUtils.copyDirectory(new File("D:\\Idea\\resource\\aaa"), new File("D:\\Idea\\resource\\aaa复制品"));
        //删除文件夹
        //FileUtils.deleteDirectory(new File("D:\\Idea\\resource\\aaa复制品"));

        // 第三方框架做的这么好，所以Java也提供了原生的一行代码搞定很多事情，文件复制：
        // Files.copy(Path.of("Day09Io-App2\\src\\itheima01.txt"), Path.of("Day09Io-App2/src/zengjihong1.txt"));

        //把原文件的内容直接读成一个字符串内容返回
        System.out.println(Files.readString(Path.of("Day09Io-App2\\src\\itheima01.txt")));
    }
}
